package net.imagine.core;

import java.awt.image.BufferedImage;

/**
 * 图片操作处理接口（完善中……） 用户可已通过实现该类来自定义图片的操作算法
 * 
 * @author wuqh
 */
public interface ImageOperations {
	/**
	 * 获取图片信息，包括图片格式，图片宽度，图片高度
	 * 
	 * @param imagePath
	 *            图片路径
	 * 
	 * @return ImageInfo,包括[图片格式，图片宽度，图片高度]
	 * */
	public ImageInfo showImageInfo(String imagePath);

	/**
	 * 压缩图片，保持原有格式
	 * 
	 * @param srcURL
	 *            源图片的路径
	 * @param destURL
	 *            目标图片的路径
	 * @param baseSize
	 *            压缩后的最大长/宽
	 * 
	 * @return 图片处理结果
	 */
	public ResultState resizeImage(String srcURL, String destURL, int baseSize);

	/**
	 * 压缩图片,只压缩第一帧
	 * 
	 * @param srcURL
	 *            源图片的路径
	 * @param destURL
	 *            目标图片的路径
	 * @param baseSize
	 *            压缩后的最大长/宽
	 * 
	 * @return 图片处理结果
	 */
	public ResultState resizeFirstFrame(String srcURL, String destURL, int baseSize);

	/**
	 * 剪切图片，从srcImage中以(x,y)为起点切出一张长、宽都为size的图片
	 * 
	 * @param srcURL
	 *            源图片的路径
	 * @param destURL
	 *            目标图片的路径
	 * @param x
	 *            x坐标
	 * @param y
	 *            有坐标
	 * @param size
	 *            需要剪切的大小
	 * 
	 * @return 图片处理结果
	 */
	public ResultState cropImage(String srcURL, String destURL, int x, int y, int size);

	/**
	 * 剪切图片，从srcImage中以(x,y)为起点切出一张长、宽都为cropSize的图片，并缩放到finalSize大小
	 * 
	 * @param srcURL
	 *            源图片的路径
	 * @param destURL
	 *            目标图片的路径
	 * @param x
	 *            x坐标
	 * @param y
	 *            有坐标
	 * @param cropSize
	 *            需要剪切的大小
	 * @param finalSize
	 *            最终图片的大小
	 * @return 图片处理结果
	 */
	public ResultState cropAndResizeImage(String srcURL, String destURL, int x, int y, int cropSize,
			int finalSize);

	/**
	 * 压缩图片
	 * 
	 * @param srcImage
	 *            源图片
	 * @param destURL
	 *            目标图片的路径
	 * @param baseSize
	 *            压缩后的最大长/宽
	 * 
	 * @return 图片处理结果
	 */
	public ResultState resizeImage(BufferedImage srcImage, String destURL, int baseSize);
}